"""
    掩膜的使用
        cv.calcHist(images, channels, mask, histSize, ranges, hist, accumulate)
            参数：mask:掩模图像。要统计整幅画的直方图就把它设为None，但是如果你想统计图像某一部分的直方图的话，就需要制作掩模图像，并使用它
"""

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

# 1. 读取图像
img = cv.imread("image/cat.jpeg", 0)

# 2. 创建蒙版
mask = np.zeros(img.shape[:2], np.uint8)
mask[400:650, 200:500] = 255

# 3. 掩膜
masked_img = cv.bitwise_and(img, img, mask=mask)

# 4. 统计掩膜后图像的灰度图
mask_histr = cv.calcHist([img], [0], mask, [256], [1, 256])

# 5. 图像展示
fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(10, 8))
axes[0, 0].imshow(img, cmap=plt.cm.gray)
axes[0, 0].set_title("原图")
axes[0, 1].imshow(mask, cmap=plt.cm.gray)
axes[0, 1].set_title("蒙版数据")
axes[1, 0].imshow(masked_img, cmap=plt.cm.gray)
axes[1, 0].set_title("掩膜后数据")
axes[1, 1].plot(mask_histr)
axes[1, 1].grid()
axes[1, 1].set_title("灰度直方图")
plt.show()




